\hypertarget{namespaceapprox}{}\doxysubsection{Пространство имен approx}
\label{namespaceapprox}\index{approx@{approx}}
\doxysubsubsection*{Функции}
\begin{DoxyCompactItemize}
\item 
vector$<$ double $>$ \mbox{\hyperlink{namespaceapprox_aae61a48ce45dc9ffd85c4aa9d2b83ddb}{calc\+\_\+polynom\+\_\+func}} (vector$<$ double $>$ $\ast$polynom\+\_\+values, vector$<$ double $>$ $\ast$x\+\_\+values)
\item 
double \mbox{\hyperlink{namespaceapprox_aea367932a8510bb34049aed6b47c928c}{vector\+\_\+mid}} (vector$<$ double $>$ $\ast$v)
\item 
double \mbox{\hyperlink{namespaceapprox_a35fc402b24fd6abfad92d7c8f72ba55e}{difference}} (vector$<$ double $>$ $\ast$x\+\_\+values, vector$<$ double $>$ $\ast$y\+\_\+values, vector$<$ double $>$ $\ast$polynom\+\_\+values)
\item 
double \mbox{\hyperlink{namespaceapprox_a8312135459085eaba94cf40deacf1799}{approx\+\_\+mistake}} (vector$<$ double $>$ $\ast$x\+\_\+values, vector$<$ double $>$ $\ast$y\+\_\+values, vector$<$ double $>$ $\ast$polynom\+\_\+values)
\begin{DoxyCompactList}\small\item\em approx\+\_\+mistake -\/ расчёт ошибки аппроксимации \end{DoxyCompactList}\item 
vector$<$ vector$<$ double $>$ $>$ \mbox{\hyperlink{namespaceapprox_a3059d3798e161fa72f89ce8b40ead8a2}{coefficients}} (vector$<$ double $>$ $\ast$x\+\_\+values, int res\+\_\+ind)
\item 
vector$<$ double $>$ \mbox{\hyperlink{namespaceapprox_acd725e4f6d55087c7b00d0b5302d7ebe}{polynom}} (vector$<$ double $>$ $\ast$x\+\_\+values, int res\+\_\+ind)
\item 
vector$<$ vector$<$ double $>$ $>$ \mbox{\hyperlink{namespaceapprox_ad056c53e8c7fab970e9016c58273d240}{fill\+\_\+matrix}} (vector$<$ double $>$ $\ast$x\+\_\+values, int max\+\_\+pow)
\item 
vector$<$ double $>$ \mbox{\hyperlink{namespaceapprox_abc3e8a47644df941661a6d93dccef791}{least\+\_\+squares}} (vector$<$ double $>$ $\ast$x\+\_\+values, vector$<$ double $>$ $\ast$y\+\_\+values, int max\+\_\+pow)
\begin{DoxyCompactList}\small\item\em least\+\_\+squares расчитывает полином методом наименьших квадратов \end{DoxyCompactList}\item 
vector$<$ double $>$ \mbox{\hyperlink{namespaceapprox_aaf17acf88dbce46e2693919c34f6a5c4}{lagrange}} (vector$<$ double $>$ $\ast$x\+\_\+values, vector$<$ double $>$ $\ast$y\+\_\+values)
\begin{DoxyCompactList}\small\item\em lagrange расчитывает интерполяционный полином Лагранжа \end{DoxyCompactList}\item 
vector$<$ double $>$ \mbox{\hyperlink{namespaceapprox_abe35bfd2086432c0d7deebadb7765f5b}{split\+\_\+lagrange}} (vector$<$ double $>$ $\ast$x\+\_\+values, vector$<$ double $>$ $\ast$y\+\_\+values, int max\+\_\+pow)
\begin{DoxyCompactList}\small\item\em split\+\_\+lagrange работает аналогично методу lagrange, но использует только часть узлов интерполяции так чтобы полином не превышал степень max\+\_\+pow \end{DoxyCompactList}\item 
double \mbox{\hyperlink{namespaceapprox_a094281e5f6d9247a2472145b60182d5f}{squared\+\_\+deviation}} (vector$<$ double $>$ $\ast$v)
\begin{DoxyCompactList}\small\item\em squared\+\_\+deviation расчитывает квадратичное отклонение для входных данных \end{DoxyCompactList}\item 
double \mbox{\hyperlink{namespaceapprox_abbe51c832748c9e94ae9990d4934cb76}{correlation}} (vector$<$ double $>$ $\ast$x\+\_\+values, vector$<$ double $>$ $\ast$y\+\_\+values, vector$<$ double $>$ $\ast$polynom\+\_\+values)
\begin{DoxyCompactList}\small\item\em correlation -\/ расчёт корреляции между значениями полиномиальной функции и значениями входных данных \end{DoxyCompactList}\end{DoxyCompactItemize}


\doxysubsubsection{Функции}
\mbox{\Hypertarget{namespaceapprox_a8312135459085eaba94cf40deacf1799}\label{namespaceapprox_a8312135459085eaba94cf40deacf1799}} 
\index{approx@{approx}!approx\_mistake@{approx\_mistake}}
\index{approx\_mistake@{approx\_mistake}!approx@{approx}}
\doxyparagraph{\texorpdfstring{approx\_mistake()}{approx\_mistake()}}
{\footnotesize\ttfamily double \mbox{\hyperlink{_desktops_2_desktop1_2doxy_2project_2src_2lib_2decoding_2decoding__global_8h_a18da4e978a94111b1b7306461dc74644}{D\+E\+C\+O\+D\+I\+N\+G\+\_\+\+E\+X\+P\+O\+RT}} approx\+::approx\+\_\+mistake (\begin{DoxyParamCaption}\item[{vector$<$ double $>$ $\ast$}]{x\+\_\+values,  }\item[{vector$<$ double $>$ $\ast$}]{y\+\_\+values,  }\item[{vector$<$ double $>$ $\ast$}]{polynom\+\_\+values }\end{DoxyParamCaption})}



approx\+\_\+mistake -\/ расчёт ошибки аппроксимации 


\begin{DoxyParams}{Аргументы}
{\em x\+\_\+values} & вектор значений x узлов интерполяции \\
\hline
{\em y\+\_\+values} & вектор значений y узлов интерполяции \\
\hline
{\em polynom\+\_\+values} & -\/ вектор коэффициентов полинома, где индекс коэффициента в векторе соответствует степени аргумента при которой стоит этот коэффициент \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Возвращает}
возвращает ошибку аппроксимации в процентах 
\end{DoxyReturn}


См. определение в файле decoding.\+cpp строка 48


\begin{DoxyCode}{0}
\DoxyCodeLine{49     \{}
\DoxyCodeLine{50         \textcolor{keywordtype}{double} res = 0;}
\DoxyCodeLine{51         vector<double> y2\_values = \mbox{\hyperlink{namespaceapprox_aae61a48ce45dc9ffd85c4aa9d2b83ddb}{calc\_polynom\_func}}(polynom\_values, x\_values);}
\DoxyCodeLine{52         \textcolor{keywordtype}{int} n = (*y\_values).size();}
\DoxyCodeLine{53         \textcolor{keywordflow}{for}(\textcolor{keywordtype}{int} i = 0; i < (*y\_values).size(); i++)}
\DoxyCodeLine{54         \{}
\DoxyCodeLine{55             \textcolor{keywordflow}{if}((*y\_values)[i] == 0)}
\DoxyCodeLine{56                 n -\/= 1;}
\DoxyCodeLine{57             \textcolor{keywordflow}{else}}
\DoxyCodeLine{58                 res += abs((y2\_values[i] -\/ (*y\_values)[i]) / (*y\_values)[i]);}
\DoxyCodeLine{59         \}}
\DoxyCodeLine{60         \textcolor{keywordflow}{if}(res == 0)}
\DoxyCodeLine{61             \textcolor{keywordflow}{return} 0;}
\DoxyCodeLine{62         \textcolor{keywordflow}{return} res / n * 100;}
\DoxyCodeLine{63     \}}

\end{DoxyCode}


Перекрестные ссылки calc\+\_\+polynom\+\_\+func().



Используется в Api\+Decoding\+::approx\+\_\+mistake() и split\+\_\+lagrange().

Граф вызовов\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{namespaceapprox_a8312135459085eaba94cf40deacf1799_cgraph}
\end{center}
\end{figure}
Граф вызова функции\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{namespaceapprox_a8312135459085eaba94cf40deacf1799_icgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{namespaceapprox_aae61a48ce45dc9ffd85c4aa9d2b83ddb}\label{namespaceapprox_aae61a48ce45dc9ffd85c4aa9d2b83ddb}} 
\index{approx@{approx}!calc\_polynom\_func@{calc\_polynom\_func}}
\index{calc\_polynom\_func@{calc\_polynom\_func}!approx@{approx}}
\doxyparagraph{\texorpdfstring{calc\_polynom\_func()}{calc\_polynom\_func()}}
{\footnotesize\ttfamily vector$<$ double $>$ \mbox{\hyperlink{_desktops_2_desktop1_2doxy_2project_2src_2lib_2decoding_2decoding__global_8h_a18da4e978a94111b1b7306461dc74644}{D\+E\+C\+O\+D\+I\+N\+G\+\_\+\+E\+X\+P\+O\+RT}} approx\+::calc\+\_\+polynom\+\_\+func (\begin{DoxyParamCaption}\item[{vector$<$ double $>$ $\ast$}]{polynom\+\_\+values,  }\item[{vector$<$ double $>$ $\ast$}]{x\+\_\+values }\end{DoxyParamCaption})}



См. определение в файле decoding.\+cpp строка 10


\begin{DoxyCode}{0}
\DoxyCodeLine{11     \{}
\DoxyCodeLine{12         vector<double> res((*x\_values).size());}
\DoxyCodeLine{13         \textcolor{keywordflow}{for}(\textcolor{keywordtype}{int} i = 0; i < (*x\_values).size(); i++)}
\DoxyCodeLine{14         \{}
\DoxyCodeLine{15             \textcolor{keywordflow}{for}(\textcolor{keywordtype}{int} j = 0; j < (*polynom\_values).size(); j++)}
\DoxyCodeLine{16             \{}
\DoxyCodeLine{17                 res[i] += (*polynom\_values)[j] * pow((*x\_values)[i], j);}
\DoxyCodeLine{18             \}}
\DoxyCodeLine{19         \}}
\DoxyCodeLine{20         \textcolor{keywordflow}{return} res;}
\DoxyCodeLine{21     \}}

\end{DoxyCode}


Используется в approx\+\_\+mistake() и correlation().

Граф вызова функции\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{namespaceapprox_aae61a48ce45dc9ffd85c4aa9d2b83ddb_icgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{namespaceapprox_a3059d3798e161fa72f89ce8b40ead8a2}\label{namespaceapprox_a3059d3798e161fa72f89ce8b40ead8a2}} 
\index{approx@{approx}!coefficients@{coefficients}}
\index{coefficients@{coefficients}!approx@{approx}}
\doxyparagraph{\texorpdfstring{coefficients()}{coefficients()}}
{\footnotesize\ttfamily vector$<$ vector$<$ double $>$ $>$ approx\+::coefficients (\begin{DoxyParamCaption}\item[{vector$<$ double $>$ $\ast$}]{x\+\_\+values,  }\item[{int}]{res\+\_\+ind }\end{DoxyParamCaption})}



См. определение в файле decoding.\+cpp строка 65


\begin{DoxyCode}{0}
\DoxyCodeLine{66     \{}
\DoxyCodeLine{67         vector<vector<double>> res(2);}
\DoxyCodeLine{68         \textcolor{keywordtype}{int} res\_size = (*x\_values).size() -\/ 1;}
\DoxyCodeLine{69         res[0].resize(res\_size);}
\DoxyCodeLine{70         res[1].resize(res\_size);}
\DoxyCodeLine{71 }
\DoxyCodeLine{72         \textcolor{keywordflow}{for}(\textcolor{keywordtype}{int} i = 0; i <= res\_size; i++)}
\DoxyCodeLine{73         \{}
\DoxyCodeLine{74             \textcolor{keywordflow}{if} (i != res\_ind)}
\DoxyCodeLine{75             \{}
\DoxyCodeLine{76                 \textcolor{keywordtype}{double} c = 1/((*x\_values)[res\_ind] -\/ (*x\_values)[i]);}
\DoxyCodeLine{77                 res[0][i -\/ (i > res\_ind)] = -\/(*x\_values)[i] * c;}
\DoxyCodeLine{78                 res[1][i -\/ (i > res\_ind)] = c;}
\DoxyCodeLine{79             \}}
\DoxyCodeLine{80         \}}
\DoxyCodeLine{81         \textcolor{keywordflow}{return} res;}
\DoxyCodeLine{82     \}}

\end{DoxyCode}


Используется в polynom().

Граф вызова функции\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{namespaceapprox_a3059d3798e161fa72f89ce8b40ead8a2_icgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{namespaceapprox_abbe51c832748c9e94ae9990d4934cb76}\label{namespaceapprox_abbe51c832748c9e94ae9990d4934cb76}} 
\index{approx@{approx}!correlation@{correlation}}
\index{correlation@{correlation}!approx@{approx}}
\doxyparagraph{\texorpdfstring{correlation()}{correlation()}}
{\footnotesize\ttfamily double \mbox{\hyperlink{_desktops_2_desktop1_2doxy_2project_2src_2lib_2decoding_2decoding__global_8h_a18da4e978a94111b1b7306461dc74644}{D\+E\+C\+O\+D\+I\+N\+G\+\_\+\+E\+X\+P\+O\+RT}} approx\+::correlation (\begin{DoxyParamCaption}\item[{vector$<$ double $>$ $\ast$}]{x\+\_\+values,  }\item[{vector$<$ double $>$ $\ast$}]{y\+\_\+values,  }\item[{vector$<$ double $>$ $\ast$}]{polynom\+\_\+values }\end{DoxyParamCaption})}



correlation -\/ расчёт корреляции между значениями полиномиальной функции и значениями входных данных 


\begin{DoxyParams}{Аргументы}
{\em x\+\_\+values} & вектор значений x узлов интерполяции \\
\hline
{\em y\+\_\+values} & вектор значений y узлов интерполяции \\
\hline
{\em polynom\+\_\+values} & -\/ вектор коэффициентов полинома, где индекс коэффициента в векторе соответствует степени аргумента при которой стоит этот коэффициент \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Возвращает}
возвращает значение корреляции 
\end{DoxyReturn}


См. определение в файле decoding.\+cpp строка 300


\begin{DoxyCode}{0}
\DoxyCodeLine{301     \{}
\DoxyCodeLine{302         \textcolor{keywordtype}{double} res = 0;}
\DoxyCodeLine{303         \textcolor{keywordtype}{double} y\_mid = \mbox{\hyperlink{namespaceapprox_aea367932a8510bb34049aed6b47c928c}{vector\_mid}}(y\_values);}
\DoxyCodeLine{304         vector<double> y2\_values = \mbox{\hyperlink{namespaceapprox_aae61a48ce45dc9ffd85c4aa9d2b83ddb}{calc\_polynom\_func}}(polynom\_values, x\_values);}
\DoxyCodeLine{305         \textcolor{keywordtype}{double} y2\_mid = \mbox{\hyperlink{namespaceapprox_aea367932a8510bb34049aed6b47c928c}{vector\_mid}}(\&y2\_values);}
\DoxyCodeLine{306         \textcolor{keywordflow}{for}(\textcolor{keywordtype}{int} i = 0; i < (*y\_values).size(); i++)}
\DoxyCodeLine{307         \{}
\DoxyCodeLine{308             res += ((*y\_values)[i] -\/ y\_mid) * (y2\_values[i] -\/ y2\_mid);}
\DoxyCodeLine{309         \}}
\DoxyCodeLine{310         res /= (*y\_values).size() * \mbox{\hyperlink{namespaceapprox_a094281e5f6d9247a2472145b60182d5f}{squared\_deviation}}(y\_values) * \mbox{\hyperlink{namespaceapprox_a094281e5f6d9247a2472145b60182d5f}{squared\_deviation}}(\&y2\_values);}
\DoxyCodeLine{311         \textcolor{keywordflow}{return} res;}
\DoxyCodeLine{312     \}}

\end{DoxyCode}


Перекрестные ссылки calc\+\_\+polynom\+\_\+func(), squared\+\_\+deviation() и vector\+\_\+mid().



Используется в Api\+Decoding\+::correlation().

Граф вызовов\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{namespaceapprox_abbe51c832748c9e94ae9990d4934cb76_cgraph}
\end{center}
\end{figure}
Граф вызова функции\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{namespaceapprox_abbe51c832748c9e94ae9990d4934cb76_icgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{namespaceapprox_a35fc402b24fd6abfad92d7c8f72ba55e}\label{namespaceapprox_a35fc402b24fd6abfad92d7c8f72ba55e}} 
\index{approx@{approx}!difference@{difference}}
\index{difference@{difference}!approx@{approx}}
\doxyparagraph{\texorpdfstring{difference()}{difference()}}
{\footnotesize\ttfamily double \mbox{\hyperlink{_desktops_2_desktop1_2doxy_2project_2src_2lib_2decoding_2decoding__global_8h_a18da4e978a94111b1b7306461dc74644}{D\+E\+C\+O\+D\+I\+N\+G\+\_\+\+E\+X\+P\+O\+RT}} approx\+::difference (\begin{DoxyParamCaption}\item[{vector$<$ double $>$ $\ast$}]{x\+\_\+values,  }\item[{vector$<$ double $>$ $\ast$}]{y\+\_\+values,  }\item[{vector$<$ double $>$ $\ast$}]{polynom\+\_\+values }\end{DoxyParamCaption})}



См. определение в файле decoding.\+cpp строка 33


\begin{DoxyCode}{0}
\DoxyCodeLine{34     \{}
\DoxyCodeLine{35         \textcolor{keywordtype}{double} res = 0;}
\DoxyCodeLine{36         \textcolor{keywordflow}{for}(\textcolor{keywordtype}{int} i = 0; i < (*x\_values).size(); i++)}
\DoxyCodeLine{37         \{}
\DoxyCodeLine{38             \textcolor{keywordtype}{double} y = 0;}
\DoxyCodeLine{39             \textcolor{keywordflow}{for}(\textcolor{keywordtype}{int} j = 0; j < (*polynom\_values).size(); j++)}
\DoxyCodeLine{40             \{}
\DoxyCodeLine{41                 y += (*polynom\_values)[j] * pow((*x\_values)[i], j);}
\DoxyCodeLine{42             \}}
\DoxyCodeLine{43             res += abs(y -\/ (*y\_values)[i]);}
\DoxyCodeLine{44         \}}
\DoxyCodeLine{45         \textcolor{keywordflow}{return} res;}
\DoxyCodeLine{46     \}}

\end{DoxyCode}
\mbox{\Hypertarget{namespaceapprox_ad056c53e8c7fab970e9016c58273d240}\label{namespaceapprox_ad056c53e8c7fab970e9016c58273d240}} 
\index{approx@{approx}!fill\_matrix@{fill\_matrix}}
\index{fill\_matrix@{fill\_matrix}!approx@{approx}}
\doxyparagraph{\texorpdfstring{fill\_matrix()}{fill\_matrix()}}
{\footnotesize\ttfamily vector$<$ vector$<$ double $>$ $>$ approx\+::fill\+\_\+matrix (\begin{DoxyParamCaption}\item[{vector$<$ double $>$ $\ast$}]{x\+\_\+values,  }\item[{int}]{max\+\_\+pow }\end{DoxyParamCaption})}



См. определение в файле decoding.\+cpp строка 116


\begin{DoxyCode}{0}
\DoxyCodeLine{117     \{}
\DoxyCodeLine{118         vector<vector<double>> matrix(max\_pow);}
\DoxyCodeLine{119         \textcolor{keywordflow}{for}(\textcolor{keywordtype}{int} i = 0; i < max\_pow; i++)}
\DoxyCodeLine{120         \{}
\DoxyCodeLine{121             matrix[i].resize(max\_pow);}
\DoxyCodeLine{122             \textcolor{keywordflow}{for}(\textcolor{keywordtype}{int} j = 0; j < max\_pow; j++)}
\DoxyCodeLine{123             \{}
\DoxyCodeLine{124                 matrix[i][j] = 0;}
\DoxyCodeLine{125                 \textcolor{keywordflow}{for}(\textcolor{keywordtype}{int} k = 0; k < (*x\_values).size(); k++)}
\DoxyCodeLine{126                 \{}
\DoxyCodeLine{127                     matrix[i][j] += pow((*x\_values)[k], i + j);}
\DoxyCodeLine{128                 \}}
\DoxyCodeLine{129             \}}
\DoxyCodeLine{130         \}}
\DoxyCodeLine{131         \textcolor{keywordflow}{return} matrix;}
\DoxyCodeLine{132     \}}

\end{DoxyCode}


Используется в least\+\_\+squares().

Граф вызова функции\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{namespaceapprox_ad056c53e8c7fab970e9016c58273d240_icgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{namespaceapprox_aaf17acf88dbce46e2693919c34f6a5c4}\label{namespaceapprox_aaf17acf88dbce46e2693919c34f6a5c4}} 
\index{approx@{approx}!lagrange@{lagrange}}
\index{lagrange@{lagrange}!approx@{approx}}
\doxyparagraph{\texorpdfstring{lagrange()}{lagrange()}}
{\footnotesize\ttfamily vector$<$ double $>$ \mbox{\hyperlink{_desktops_2_desktop1_2doxy_2project_2src_2lib_2decoding_2decoding__global_8h_a18da4e978a94111b1b7306461dc74644}{D\+E\+C\+O\+D\+I\+N\+G\+\_\+\+E\+X\+P\+O\+RT}} approx\+::lagrange (\begin{DoxyParamCaption}\item[{vector$<$ double $>$ $\ast$}]{x\+\_\+values,  }\item[{vector$<$ double $>$ $\ast$}]{y\+\_\+values }\end{DoxyParamCaption})}



lagrange расчитывает интерполяционный полином Лагранжа 


\begin{DoxyParams}{Аргументы}
{\em x\+\_\+values} & вектор значений x узлов интерполяции \\
\hline
{\em y\+\_\+values} & вектор значений y узлов интерполяции \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Возвращает}
возвращает вектор коэффициентов полинома, где индекс коэффициента в векторе соответствует степени аргумента при которой стоит этот коэффициент 
\end{DoxyReturn}


См. определение в файле decoding.\+cpp строка 202


\begin{DoxyCode}{0}
\DoxyCodeLine{203     \{}
\DoxyCodeLine{204         \textcolor{keywordtype}{int} res\_size = (*x\_values).size();}
\DoxyCodeLine{205         vector<double> res(res\_size);}
\DoxyCodeLine{206 }
\DoxyCodeLine{207         \textcolor{keywordflow}{for}(\textcolor{keywordtype}{int} i = 0; i < res\_size; i++)   \textcolor{comment}{// можно распараллелить}}
\DoxyCodeLine{208         \{}
\DoxyCodeLine{209             vector<double> p = \mbox{\hyperlink{namespaceapprox_acd725e4f6d55087c7b00d0b5302d7ebe}{polynom}}(x\_values, i);}
\DoxyCodeLine{210             \textcolor{keywordflow}{for}(\textcolor{keywordtype}{int} j = 0; j < res\_size; j++)}
\DoxyCodeLine{211             \{}
\DoxyCodeLine{212                 res[j] += p[j] * (*y\_values)[i];}
\DoxyCodeLine{213             \}}
\DoxyCodeLine{214         \}}
\DoxyCodeLine{215         \textcolor{keywordflow}{return} res;}
\DoxyCodeLine{216     \}}

\end{DoxyCode}


Перекрестные ссылки polynom().



Используется в Api\+Decoding\+::lagrange\+\_\+polynom() и split\+\_\+lagrange().

Граф вызовов\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{namespaceapprox_aaf17acf88dbce46e2693919c34f6a5c4_cgraph}
\end{center}
\end{figure}
Граф вызова функции\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{namespaceapprox_aaf17acf88dbce46e2693919c34f6a5c4_icgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{namespaceapprox_abc3e8a47644df941661a6d93dccef791}\label{namespaceapprox_abc3e8a47644df941661a6d93dccef791}} 
\index{approx@{approx}!least\_squares@{least\_squares}}
\index{least\_squares@{least\_squares}!approx@{approx}}
\doxyparagraph{\texorpdfstring{least\_squares()}{least\_squares()}}
{\footnotesize\ttfamily vector$<$ double $>$ \mbox{\hyperlink{_desktops_2_desktop1_2doxy_2project_2src_2lib_2decoding_2decoding__global_8h_a18da4e978a94111b1b7306461dc74644}{D\+E\+C\+O\+D\+I\+N\+G\+\_\+\+E\+X\+P\+O\+RT}} approx\+::least\+\_\+squares (\begin{DoxyParamCaption}\item[{vector$<$ double $>$ $\ast$}]{x\+\_\+values,  }\item[{vector$<$ double $>$ $\ast$}]{y\+\_\+values,  }\item[{int}]{max\+\_\+pow }\end{DoxyParamCaption})}



least\+\_\+squares расчитывает полином методом наименьших квадратов 


\begin{DoxyParams}{Аргументы}
{\em x\+\_\+values} & вектор значений x узлов интерполяции \\
\hline
{\em y\+\_\+values} & вектор значений y узлов интерполяции \\
\hline
{\em max\+\_\+pow} & максимально допустимая степень полинома \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Возвращает}
возвращает вектор коэффициентов полинома, где индекс коэффициента в векторе соответствует степени аргумента при которой стоит этот коэффициент 
\end{DoxyReturn}


См. определение в файле decoding.\+cpp строка 134


\begin{DoxyCode}{0}
\DoxyCodeLine{135     \{}
\DoxyCodeLine{136         max\_pow++;}
\DoxyCodeLine{137         vector<vector<double>> matrix\_a = \mbox{\hyperlink{namespaceapprox_ad056c53e8c7fab970e9016c58273d240}{fill\_matrix}}(x\_values, max\_pow);}
\DoxyCodeLine{138         vector<double> vector\_b(max\_pow);}
\DoxyCodeLine{139         \textcolor{keywordflow}{for}(\textcolor{keywordtype}{int} i = 0; i < max\_pow; i++)}
\DoxyCodeLine{140         \{}
\DoxyCodeLine{141             \textcolor{keywordflow}{for}(\textcolor{keywordtype}{int} k = 0; k < (*x\_values).size(); k++)}
\DoxyCodeLine{142             \{}
\DoxyCodeLine{143                 vector\_b[i] += pow((*x\_values)[k], i) * (*y\_values)[k];}
\DoxyCodeLine{144             \}}
\DoxyCodeLine{145         \}}
\DoxyCodeLine{146         \textcolor{keywordflow}{for}(\textcolor{keywordtype}{int} i = 0; i < max\_pow; i++)}
\DoxyCodeLine{147         \{}
\DoxyCodeLine{148             \textcolor{keywordtype}{int} not\_zero = -\/1;}
\DoxyCodeLine{149             \textcolor{keywordflow}{for}(\textcolor{keywordtype}{int} j = i; j < max\_pow; j++)}
\DoxyCodeLine{150             \{}
\DoxyCodeLine{151                 \textcolor{keywordflow}{if}(matrix\_a[i][j] != 0)}
\DoxyCodeLine{152                 \{}
\DoxyCodeLine{153                     not\_zero = j;}
\DoxyCodeLine{154                     \textcolor{keywordflow}{break};}
\DoxyCodeLine{155                 \}}
\DoxyCodeLine{156             \}}
\DoxyCodeLine{157             \textcolor{keywordflow}{if}(not\_zero == -\/1)}
\DoxyCodeLine{158                 \textcolor{keywordflow}{continue};}
\DoxyCodeLine{159             \textcolor{keywordflow}{if}(i != not\_zero)}
\DoxyCodeLine{160             \{}
\DoxyCodeLine{161                 vector<double> tmp\_m = matrix\_a[i];}
\DoxyCodeLine{162                 matrix\_a[i] = matrix\_a[not\_zero];}
\DoxyCodeLine{163                 matrix\_a[not\_zero] = tmp\_m;}
\DoxyCodeLine{164 }
\DoxyCodeLine{165                 \textcolor{keywordtype}{double} tmp\_v = vector\_b[i];}
\DoxyCodeLine{166                 vector\_b[i] = vector\_b[not\_zero];}
\DoxyCodeLine{167                 vector\_b[not\_zero] = tmp\_v;}
\DoxyCodeLine{168             \}}
\DoxyCodeLine{169             vector\_b[i] /= matrix\_a[i][i];}
\DoxyCodeLine{170             \textcolor{keywordflow}{for}(\textcolor{keywordtype}{int} j = i + 1; j < max\_pow; j++)}
\DoxyCodeLine{171             \{}
\DoxyCodeLine{172                 matrix\_a[i][j] /= matrix\_a[i][i];}
\DoxyCodeLine{173             \}}
\DoxyCodeLine{174             matrix\_a[i][i] = 1;}
\DoxyCodeLine{175             \textcolor{keywordflow}{for}(\textcolor{keywordtype}{int} j = i + 1; j < max\_pow; j++)}
\DoxyCodeLine{176             \{}
\DoxyCodeLine{177                 \textcolor{keywordflow}{if}(matrix\_a[j][i] == 0)}
\DoxyCodeLine{178                     \textcolor{keywordflow}{continue};}
\DoxyCodeLine{179                 vector\_b[j] -\/= matrix\_a[j][i] * vector\_b[i];}
\DoxyCodeLine{180                 \textcolor{keywordflow}{for}(\textcolor{keywordtype}{int} k = i + 1; k < max\_pow; k++)}
\DoxyCodeLine{181                 \{}
\DoxyCodeLine{182                     matrix\_a[j][k] -\/= matrix\_a[j][i] * matrix\_a[i][k];}
\DoxyCodeLine{183                 \}}
\DoxyCodeLine{184                 matrix\_a[j][i] = 0;}
\DoxyCodeLine{185             \}}
\DoxyCodeLine{186         \}}
\DoxyCodeLine{187         \textcolor{keywordflow}{for}(\textcolor{keywordtype}{int} i = max\_pow -\/ 1; i >= 0; i-\/-\/)}
\DoxyCodeLine{188         \{}
\DoxyCodeLine{189             \textcolor{keywordflow}{if}(matrix\_a[i][i] == 0)}
\DoxyCodeLine{190             \{}
\DoxyCodeLine{191                 vector\_b[i] = 0;}
\DoxyCodeLine{192                 \textcolor{keywordflow}{continue};}
\DoxyCodeLine{193             \}}
\DoxyCodeLine{194             \textcolor{keywordflow}{for}(\textcolor{keywordtype}{int} j = i -\/ 1; j >= 0; j-\/-\/)}
\DoxyCodeLine{195             \{}
\DoxyCodeLine{196                 vector\_b[j] -\/= matrix\_a[j][i] * vector\_b[i];}
\DoxyCodeLine{197             \}}
\DoxyCodeLine{198         \}}
\DoxyCodeLine{199         \textcolor{keywordflow}{return} vector\_b;}
\DoxyCodeLine{200     \}}

\end{DoxyCode}


Перекрестные ссылки fill\+\_\+matrix().



Используется в Api\+Decoding\+::least\+\_\+squares\+\_\+polynom().

Граф вызовов\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=346pt]{namespaceapprox_abc3e8a47644df941661a6d93dccef791_cgraph}
\end{center}
\end{figure}
Граф вызова функции\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{namespaceapprox_abc3e8a47644df941661a6d93dccef791_icgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{namespaceapprox_acd725e4f6d55087c7b00d0b5302d7ebe}\label{namespaceapprox_acd725e4f6d55087c7b00d0b5302d7ebe}} 
\index{approx@{approx}!polynom@{polynom}}
\index{polynom@{polynom}!approx@{approx}}
\doxyparagraph{\texorpdfstring{polynom()}{polynom()}}
{\footnotesize\ttfamily vector$<$ double $>$ approx\+::polynom (\begin{DoxyParamCaption}\item[{vector$<$ double $>$ $\ast$}]{x\+\_\+values,  }\item[{int}]{res\+\_\+ind }\end{DoxyParamCaption})}



См. определение в файле decoding.\+cpp строка 84


\begin{DoxyCode}{0}
\DoxyCodeLine{85     \{}
\DoxyCodeLine{86         vector<vector<double>> coef = \mbox{\hyperlink{namespaceapprox_a3059d3798e161fa72f89ce8b40ead8a2}{coefficients}}(x\_values, res\_ind);}
\DoxyCodeLine{87         \textcolor{keywordtype}{int} x\_size = (*x\_values).size();}
\DoxyCodeLine{88         vector<double> res(x\_size + 1);}
\DoxyCodeLine{89         \textcolor{keywordflow}{if}(x\_size == 2)}
\DoxyCodeLine{90         \{}
\DoxyCodeLine{91             res[0] = coef[0][0];}
\DoxyCodeLine{92             res[1] = coef[1][0];}
\DoxyCodeLine{93         \}}
\DoxyCodeLine{94         \textcolor{keywordflow}{for}(\textcolor{keywordtype}{int} i = 1; i < x\_size -\/ 1; i++)}
\DoxyCodeLine{95         \{}
\DoxyCodeLine{96             \textcolor{keywordflow}{if}(i == 1)}
\DoxyCodeLine{97             \{}
\DoxyCodeLine{98                 res[0] = coef[0][0] * coef[0][1];}
\DoxyCodeLine{99                 res[1] = coef[0][0] * coef[1][1] + coef[1][0] * coef[0][1];}
\DoxyCodeLine{100                 res[2] = coef[1][0] * coef[1][1];}
\DoxyCodeLine{101             \}}
\DoxyCodeLine{102             \textcolor{keywordflow}{else}}
\DoxyCodeLine{103             \{}
\DoxyCodeLine{104                 vector<double> next\_res(x\_size + 1);}
\DoxyCodeLine{105                 \textcolor{keywordflow}{for}(\textcolor{keywordtype}{int} j = 0; j < x\_size; j++)   \textcolor{comment}{// оптимизировать?}}
\DoxyCodeLine{106                 \{}
\DoxyCodeLine{107                     next\_res[j] += res[j] * coef[0][i];}
\DoxyCodeLine{108                     next\_res[j + 1] += res[j] * coef[1][i];}
\DoxyCodeLine{109                 \}}
\DoxyCodeLine{110                 res = next\_res;}
\DoxyCodeLine{111             \}}
\DoxyCodeLine{112         \}}
\DoxyCodeLine{113         \textcolor{keywordflow}{return} res;}
\DoxyCodeLine{114     \}}

\end{DoxyCode}


Перекрестные ссылки coefficients().



Используется в lagrange().

Граф вызовов\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=328pt]{namespaceapprox_acd725e4f6d55087c7b00d0b5302d7ebe_cgraph}
\end{center}
\end{figure}
Граф вызова функции\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{namespaceapprox_acd725e4f6d55087c7b00d0b5302d7ebe_icgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{namespaceapprox_abe35bfd2086432c0d7deebadb7765f5b}\label{namespaceapprox_abe35bfd2086432c0d7deebadb7765f5b}} 
\index{approx@{approx}!split\_lagrange@{split\_lagrange}}
\index{split\_lagrange@{split\_lagrange}!approx@{approx}}
\doxyparagraph{\texorpdfstring{split\_lagrange()}{split\_lagrange()}}
{\footnotesize\ttfamily vector$<$ double $>$ \mbox{\hyperlink{_desktops_2_desktop1_2doxy_2project_2src_2lib_2decoding_2decoding__global_8h_a18da4e978a94111b1b7306461dc74644}{D\+E\+C\+O\+D\+I\+N\+G\+\_\+\+E\+X\+P\+O\+RT}} approx\+::split\+\_\+lagrange (\begin{DoxyParamCaption}\item[{vector$<$ double $>$ $\ast$}]{x\+\_\+values,  }\item[{vector$<$ double $>$ $\ast$}]{y\+\_\+values,  }\item[{int}]{max\+\_\+pow }\end{DoxyParamCaption})}



split\+\_\+lagrange работает аналогично методу lagrange, но использует только часть узлов интерполяции так чтобы полином не превышал степень max\+\_\+pow 


\begin{DoxyParams}{Аргументы}
{\em x\+\_\+values} & вектор значений x узлов интерполяции \\
\hline
{\em y\+\_\+values} & вектор значений y узлов интерполяции \\
\hline
{\em max\+\_\+pow} & максимально допустимая степень полинома \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Возвращает}
возвращает вектор коэффициентов полинома, где индекс коэффициента в векторе соответствует степени аргумента при которой стоит этот коэффициент 
\end{DoxyReturn}


См. определение в файле decoding.\+cpp строка 218


\begin{DoxyCode}{0}
\DoxyCodeLine{219     \{}
\DoxyCodeLine{220         max\_pow++;}
\DoxyCodeLine{221         \textcolor{keywordtype}{int} a = (*x\_values).size() / max\_pow;}
\DoxyCodeLine{222         \textcolor{keywordtype}{int} b = a + 1;}
\DoxyCodeLine{223         \textcolor{keywordtype}{int} save\_x2 = (*x\_values).size() -\/ a * max\_pow;}
\DoxyCodeLine{224         \textcolor{keywordtype}{int} save\_x1 = max\_pow -\/ save\_x2;}
\DoxyCodeLine{225         \textcolor{keywordtype}{double} div1\_2 = save\_x1;}
\DoxyCodeLine{226         \textcolor{keywordflow}{if} (save\_x2 > 0)}
\DoxyCodeLine{227             div1\_2 = double(save\_x1) / double(save\_x2);}
\DoxyCodeLine{228         vector<double> res;}
\DoxyCodeLine{229         \textcolor{keywordtype}{double} best\_dif = 0;}
\DoxyCodeLine{230         \textcolor{keywordflow}{for}(\textcolor{keywordtype}{int} i = 0; i < a; i++)}
\DoxyCodeLine{231         \{}
\DoxyCodeLine{232             \textcolor{keywordtype}{int} x1 = save\_x1;}
\DoxyCodeLine{233             \textcolor{keywordtype}{int} x2 = save\_x2;}
\DoxyCodeLine{234             vector<double> newX;}
\DoxyCodeLine{235             vector<double> newY;}
\DoxyCodeLine{236             \textcolor{keywordtype}{int} j = i;}
\DoxyCodeLine{237             \textcolor{keywordtype}{double} que = div1\_2;}
\DoxyCodeLine{238             \textcolor{keywordflow}{while}(x1 \&\& x2)}
\DoxyCodeLine{239             \{}
\DoxyCodeLine{240                 \textcolor{keywordflow}{while}(que >= 1 \&\& x1)}
\DoxyCodeLine{241                 \{}
\DoxyCodeLine{242                     que-\/-\/;}
\DoxyCodeLine{243                     x1-\/-\/;}
\DoxyCodeLine{244                     newX.push\_back((*x\_values)[j]);}
\DoxyCodeLine{245                     newY.push\_back((*y\_values)[j]);}
\DoxyCodeLine{246                     j += a;}
\DoxyCodeLine{247                 \}}
\DoxyCodeLine{248                 que += div1\_2;}
\DoxyCodeLine{249                 x2-\/-\/;}
\DoxyCodeLine{250                 newX.push\_back((*x\_values)[j]);}
\DoxyCodeLine{251                 newY.push\_back((*y\_values)[j]);}
\DoxyCodeLine{252                 j += b;}
\DoxyCodeLine{253             \}}
\DoxyCodeLine{254             \textcolor{keywordflow}{if}(x1)}
\DoxyCodeLine{255             \{}
\DoxyCodeLine{256                 \textcolor{keywordflow}{for}(\textcolor{keywordtype}{int} k = j; k < (*x\_values).size(); k += a)}
\DoxyCodeLine{257                 \{}
\DoxyCodeLine{258                     newX.push\_back((*x\_values)[k]);}
\DoxyCodeLine{259                     newY.push\_back((*y\_values)[k]);}
\DoxyCodeLine{260                 \}}
\DoxyCodeLine{261             \}}
\DoxyCodeLine{262             \textcolor{keywordflow}{if}(x2)}
\DoxyCodeLine{263             \{}
\DoxyCodeLine{264                 \textcolor{keywordflow}{for}(\textcolor{keywordtype}{int} k = j; k < (*x\_values).size(); k += b)}
\DoxyCodeLine{265                 \{}
\DoxyCodeLine{266                     newX.push\_back((*x\_values)[k]);}
\DoxyCodeLine{267                     newY.push\_back((*y\_values)[k]);}
\DoxyCodeLine{268                 \}}
\DoxyCodeLine{269             \}}
\DoxyCodeLine{270             vector<double> test = \mbox{\hyperlink{namespaceapprox_aaf17acf88dbce46e2693919c34f6a5c4}{lagrange}}(\&newX, \&newY);}
\DoxyCodeLine{271             \textcolor{keywordflow}{if}(i == 0)}
\DoxyCodeLine{272             \{}
\DoxyCodeLine{273                 res = test;}
\DoxyCodeLine{274                 best\_dif = \mbox{\hyperlink{namespaceapprox_a8312135459085eaba94cf40deacf1799}{approx\_mistake}}(x\_values, y\_values, \&res);}
\DoxyCodeLine{275             \}}
\DoxyCodeLine{276             \textcolor{keywordflow}{else}}
\DoxyCodeLine{277             \{}
\DoxyCodeLine{278                 \textcolor{keywordtype}{double} diff = \mbox{\hyperlink{namespaceapprox_a8312135459085eaba94cf40deacf1799}{approx\_mistake}}(x\_values, y\_values, \&test);}
\DoxyCodeLine{279                 \textcolor{keywordflow}{if}(diff < best\_dif)}
\DoxyCodeLine{280                 \{}
\DoxyCodeLine{281                     best\_dif = diff;}
\DoxyCodeLine{282                     res = test;}
\DoxyCodeLine{283                 \}}
\DoxyCodeLine{284             \}}
\DoxyCodeLine{285         \}}
\DoxyCodeLine{286         \textcolor{keywordflow}{return} res;}
\DoxyCodeLine{287     \}}

\end{DoxyCode}


Перекрестные ссылки approx\+\_\+mistake() и lagrange().



Используется в Api\+Decoding\+::split\+\_\+lagrange\+\_\+polynom().

Граф вызовов\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{namespaceapprox_abe35bfd2086432c0d7deebadb7765f5b_cgraph}
\end{center}
\end{figure}
Граф вызова функции\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{namespaceapprox_abe35bfd2086432c0d7deebadb7765f5b_icgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{namespaceapprox_a094281e5f6d9247a2472145b60182d5f}\label{namespaceapprox_a094281e5f6d9247a2472145b60182d5f}} 
\index{approx@{approx}!squared\_deviation@{squared\_deviation}}
\index{squared\_deviation@{squared\_deviation}!approx@{approx}}
\doxyparagraph{\texorpdfstring{squared\_deviation()}{squared\_deviation()}}
{\footnotesize\ttfamily double \mbox{\hyperlink{_desktops_2_desktop1_2doxy_2project_2src_2lib_2decoding_2decoding__global_8h_a18da4e978a94111b1b7306461dc74644}{D\+E\+C\+O\+D\+I\+N\+G\+\_\+\+E\+X\+P\+O\+RT}} approx\+::squared\+\_\+deviation (\begin{DoxyParamCaption}\item[{vector$<$ double $>$ $\ast$}]{v }\end{DoxyParamCaption})}



squared\+\_\+deviation расчитывает квадратичное отклонение для входных данных 


\begin{DoxyParams}{Аргументы}
{\em v} & вектор входных данных типа double \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Возвращает}
возвращает квадратичное отклонение 
\end{DoxyReturn}


См. определение в файле decoding.\+cpp строка 289


\begin{DoxyCode}{0}
\DoxyCodeLine{290     \{}
\DoxyCodeLine{291         \textcolor{keywordtype}{double} mid = \mbox{\hyperlink{namespaceapprox_aea367932a8510bb34049aed6b47c928c}{vector\_mid}}(v);}
\DoxyCodeLine{292         \textcolor{keywordtype}{double} res = 0;}
\DoxyCodeLine{293         \textcolor{keywordflow}{for} (\textcolor{keywordtype}{int} i = 0; i < (*v).size(); i++)}
\DoxyCodeLine{294         \{}
\DoxyCodeLine{295             res += pow((*v)[i] -\/ mid, 2);}
\DoxyCodeLine{296         \}}
\DoxyCodeLine{297         \textcolor{keywordflow}{return} sqrt(res / (*v).size());}
\DoxyCodeLine{298     \}}

\end{DoxyCode}


Перекрестные ссылки vector\+\_\+mid().



Используется в correlation() и Api\+Decoding\+::squared\+\_\+deviation().

Граф вызовов\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{namespaceapprox_a094281e5f6d9247a2472145b60182d5f_cgraph}
\end{center}
\end{figure}
Граф вызова функции\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{namespaceapprox_a094281e5f6d9247a2472145b60182d5f_icgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{namespaceapprox_aea367932a8510bb34049aed6b47c928c}\label{namespaceapprox_aea367932a8510bb34049aed6b47c928c}} 
\index{approx@{approx}!vector\_mid@{vector\_mid}}
\index{vector\_mid@{vector\_mid}!approx@{approx}}
\doxyparagraph{\texorpdfstring{vector\_mid()}{vector\_mid()}}
{\footnotesize\ttfamily double approx\+::vector\+\_\+mid (\begin{DoxyParamCaption}\item[{vector$<$ double $>$ $\ast$}]{v }\end{DoxyParamCaption})}



См. определение в файле decoding.\+cpp строка 23


\begin{DoxyCode}{0}
\DoxyCodeLine{24     \{}
\DoxyCodeLine{25         \textcolor{keywordtype}{double} mid = 0;}
\DoxyCodeLine{26         \textcolor{keywordflow}{for} (\textcolor{keywordtype}{int} i = 0; i < (*v).size(); i++)}
\DoxyCodeLine{27         \{}
\DoxyCodeLine{28             mid += (*v)[i];}
\DoxyCodeLine{29         \}}
\DoxyCodeLine{30         \textcolor{keywordflow}{return} mid / (*v).size();}
\DoxyCodeLine{31     \}}

\end{DoxyCode}


Используется в correlation() и squared\+\_\+deviation().

Граф вызова функции\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{namespaceapprox_aea367932a8510bb34049aed6b47c928c_icgraph}
\end{center}
\end{figure}
